/** @jsxImportSource @emotion/react */
import * as React from "react";
import {Text, TextArea, BlobInputList, InputDatalist, InputIdProvider,} from "customize-easy-ui-component";
import {
    InspectRecordLayout, InternalItemProps, useItemInputControl,
} from "../../common/base";
import {useMeasureInpFilter} from "../../common/hooks";
import { objNestSet} from "../../../common/tool";
import {useOmnipotentPrefTitle} from "../../hook/useOmnipotentPref";

export const 检验结果选=['√','——','×','无此项'];

export interface Props extends InternalItemProps {
    label: string;
    iAname?: string[];           //附加的存储那些字段     ，'观测备注'
}
//新的通用配置模型
//标题区最大列数确定的：总体每一行配置如下的[name,titl[{t:'',s: 3}],item,unit]形式；其中titl可变的长度。t是文本,s是跨越几行的TD数默认=1。unit默认='';item=必须有的主标题描述。
//这里第二字段 配置 [],和 [{} ], 不一样的，前者2占列，后者只占一列。      最后的unit列的使用看解析器自己决定的没固定用途；
export const item宏观焊接 = [
    ['焊接头', [{t:'结构检查', s:6},  ], '封头型式', ],
    ['筒体连', [{},  ], '封头与筒体的连接',  ],
    ['开孔位', [{} ], '开孔位置及补强', ],
    ['焊缝布', [{},] ,'纵（环）焊缝的布置及型式',  ],
    ['支承型', [{}], '支承或者支座的型式与布置', ],
    ['排放装', [{} ], '排放（疏水、排污）装置的设置', ],
    ['内径差', [{t:'几何尺寸及焊缝检查',s:5}, ], '筒体同一断面上最大内径与最小内径差', 'mm'],
    ['错边量', [{}, ], '纵（环）焊缝最大对口错边量', 'mm'],
    ['棱角度', [{}], '纵（环）焊缝最大棱角度', 'mm'],
    ['大咬边', [{}], '纵（环）焊缝最大咬边', 'mm'],
    ['大余高', [{}], '纵（环）焊缝最大余高', 'mm'],
    ['铭牌', [{t:'壳体外观检验',s:10}], '铭牌和标志', ],
    ['表腐蚀', [{}], '内外表面的腐蚀',  ],
    ['泄漏', [{}], '裂纹、泄漏、鼓包、变形、机械接触损伤、过热',  ],
    ['卡焊迹', [{}], '工卡具焊迹、电弧灼伤', ],
    ['固螺栓', [{}], '法兰、密封面及其紧固螺栓', ],
    ['支座', [{}], '支承、支座或者基础的下沉、倾斜、开裂',  ],
    ['脚螺栓', [{}], '地脚螺栓',  ],
    ['铅垂度', [{}], '直立容器和球形容器支柱的铅垂度',  ],
    ['膨胀孔', [{}], '多支座卧式容器的支座膨胀孔', ],
    ['信号孔', [{}], '排放（疏水、排污）装置和泄漏信号孔的堵塞、腐蚀、沉积物',  ],
    ['隔热层', [{t:'隔热层、衬里检验',s:3}], '隔热层破损、脱落、潮湿及层下腐蚀、裂纹', ],
    ['衬里层', [{}], '衬里层的破损、腐蚀、裂纹、脱落及检查孔介质流出情况',  ],
    ['堆焊层', [{}], '堆焊层的龟裂、剥离和脱落',  ],
    ['真空度', [{t:'其他检验',s:2}], '夹层真空度', ],
    ['日蒸率', [{}], '日蒸发率', ],
];
export const itemA宏观焊接: string[] = ['宏观备注','宏观结果', ];
item宏观焊接.forEach(([name, title, initIsp], i: number) => {
    itemA宏观焊接.push(name as string);
});

export const Macroscopic =
    React.forwardRef((
        {children, show, alone = true, refWidth, label, iAname,}: Props, ref
    ) => {
        const {inp, setInp} = useItemInputControl({ref});
        //const {render, itemObservation, itemObservationA,} = useMeasureListCrit(inp, setInp, config制动距离, false, false);
        const itemA = React.useMemo(() => {
            return [ ...iAname ?? [], ...itemA宏观焊接 ,'安全评定'];
        }, [ iAname]);
        const [getInpFilter] = useMeasureInpFilter(null, itemA,);
        const resultTxt =`宏观检验未见异常，安全状况等级评为 ${inp?.安全评定??' 级'}。`
        const titNode=useOmnipotentPrefTitle({config:item宏观焊接});
        return (
            <InspectRecordLayout inp={inp} setInp={setInp} getInpFilter={getInpFilter} show={show}
                                 alone={alone} label={label}>
                <Text variant="h5">{label}：</Text>
                {item宏观焊接.map(([name, _1, _2, unit]: any, i: number) => {
                    //前缀可支持三个附加列配置的；
                    return (<React.Fragment key={i}>
                        <div css={{display: 'flex', flexWrap: 'wrap', alignItems: 'center'}}>
                            {titNode[i]}
                            &nbsp;
                            <div>
                                检查结果
                                <InputIdProvider>
                                    <InputDatalist value={(inp?.[name]?.r) || ''} datalist={检验结果选}
                                                   style={{display: 'inline-flex', width: '11rem'}}
                                                   onListChange={v => objNestSet(name, 'r', v || undefined, inp, setInp)}/>
                                </InputIdProvider>
                                {unit}
                            </div>
                            <div css={{display: 'inline-flex',alignItems: 'center'}}>
                                &nbsp;备注
                                <BlobInputList value={inp?.[name]?.m || ''} datalist={['见结果栏']}
                                               style={{display: 'inline-flex', width: '12rem'}} rows={1}
                                               onListChange={v => objNestSet(name, 'm', v || undefined, inp, setInp)}/>
                            </div>
                        </div>
                    </React.Fragment>);
                })}
                宏观检验报告-备注：
                <TextArea  value={inp?.宏观备注 ||''} rows={5}
                           onChange={e => setInp({ ...inp, 宏观备注: e.currentTarget.value||undefined}) } />
                宏观检验报告-结果：
                <BlobInputList  value={inp?.宏观结果 ||''} rows={3} onListChange={v => setInp({...inp,宏观结果:v || undefined}) }
                                datalist={[ resultTxt, ]}
                />
                {children}
            </InspectRecordLayout>
        );
    });
